package main

import (
	"fmt"
	"time"
)

func main() {
	//chan 定义方式
	//var  变量名 = make(chan 数据类型，大小)
	//ch := make(chan int, 3) //双向带缓冲区

	//单向的chan
	//ch := make(chan<- int, 10) //接收
	//ch := make(<-chan int, 10) //发送

	/*
		无缓冲区，要求发送和接收必须同时准备好 才可以完成 属于同步操作 会发送阻塞等待
		有缓冲区，可以接收N个值 属于异步操作
	*/

	/*****************不带缓冲区的channel***********************/
	ch := make(chan int)
	go func() {
		value := <-ch
		fmt.Println(value)
	}()
	ch <- 1
	/*****************不带缓冲区的channel***********************/

	time.Sleep(time.Second * 3)
}
